1000 REM * DARKTERM 4.0 (C) 1986 D.S.S. 1010 REM * 1650 MODEM MODULE SOURCE 1020 REM * 1030 OPEN2,8,1,"@0:DT4.MODEM 1650" 1040 SYS700 1050 .OPT O2 1060 ; 1070 CHKIN =$FFC6 ; KERNAL EQUATES 1080 CHKOUT =$FFC9 1090 CHRIN =$FFCF 1100 CHROUT =$FFD2 1110 CLRCHN =$FFCC 1120 CLOSE =$FFC3 1130 OPEN =$FFC0 1140 SETLFS =$FFBA 1150 SETNAM =$FFBD 1160 GETIN =$FFE4 1170 READST =$FFB7 1180 PLOT =$FFF0 1190 ; 1200 TEXT =18 ; WE'LL USE THIS FOR PTR 1210 ; 1220 DDELAY =878 ; SETUP EQUATES 1230 CDELAY =880 1240 HDELAY =881 1250 ; 1260 MILLI =$090C ; ACCESS ROUTINES 1270 TIWAIT =$090F 1280 ; 1290 *=$4600 ; START HERE 1300 JMP AUTODIAL 1310 JMP AANSWER 1320 JMP ONLINE 1330 OFFLINE LDA #0 ; ON-HOOK 1340 STA 56577 1350 LDA #32 1360 STA 56579 1370 RTS 1380 ONLINE LDA #32 ; OFF-HOOK 1390 STA 56577 1400 RTS 1410 AUTODIAL STX TEXT ; SAVE ADDRESS 1420 STY TEXT+1 ; OF DIAL TEXT STRING 1430 JSR OFFLINE ; HANG UP 1440 LDA HDELAY ; WAIT HDELAY SECONDS 1450 JSR WAIT 1460 JSR ONLINE ; OFF-HOOK 1470 LDA #2 ; WAIT A 2 SEC 1480 JSR WAIT 1490 LDY #0 ; INDEX TO START 1500 STY POINT 1510 AUTO1 LDY POINT ; GET INDEX 1520 LDA (TEXT),Y ; AND CHARACTER 1530 CMP #"0" ; CHECK FOR NUMBER 1540 BCC NEXT ; NO 1550 CMP #":" 1560 BCS NEXT ; NO 1570 SEC ; LESS 48 TO GET # OF 1580 SBC #48 ; PULSES 1590 BNE AUTO2 1600 LDA #10 ; 0, SO MUST MAKE 10 PLS 1610 AUTO2 STA PULSE ; SAVE IT 1620 LDA #0 ; PULSE COUNT 1630 STA COUNT 1640 AUTO3 JSR (null)OF ; PULSE OFF LINE 1650 LDX DDELAY ; WAIT DELAY 1660 LDY DDELAY+1 1670 JSR MILLI ; WAIT IT OUT 1680 JSR ONLINE ; PULSE ON LINE 1690 LDX DDELAY ; WAIT AGAIN 1700 LDY DDELAY+1 1710 JSR MILLI 1720 INC COUNT ; NEXT PULSE 1730 LDA COUNT 1740 CMP PULSE ; DONE YET 1750 BNE AUTO3 ; NO 1760 LDA #40 ; WAIT 2/3 SEC FOR NEXT # 1770 JSR TIWAIT 1780 JSR ABORT ; CHECK FOR STOP KEY 1790 NEXT INC POINT ; NEXT # 1800 LDA POINT 1810 CMP #18 ; DONE ALL 18 CHARS 1820 BNE AUTO1 ; NO, (null) BACK 1830 LDA CDELAY ; WAIT OUT THE DELAY 1840 JSR WAIT 1850 LDA 56577 ; HAVE A CARRIER 1860 AND #16 1870 BEQ AUTO4 ; YES, SIGNAL IT 1880 SEC ; NO, SET ZERO FLAG TRUE 1890 LDA #0 ; AND SET CARRY (NOT ABORT) 1900 RTS 1910 AUTO4 SEC ; HAVE CARRIER, SET 1920 LDA #1 ; ZERO FALSE 1930 RTS ; EXIT 1940 ABORT LDA 145 ; CHECK STOP KEY 1950 CMP #$7F 1960 BNE ABO1 ; NO, (null) BACK 1970 ABO0 PLA ; PULL RETURN ADDRESS 1980 PLA 1990 CLC ; CLEAR THE CARRY 2000 ABO1 RTS ; AND EXIT TO TERM 2010 WAIT TAX ; 1 SECOND COUNTER 2020 W0 LDA #0 2030 STA 160 2040 STA 161 2050 STA 162 2060 W1 LDA 145 ; CHECK FOR ABORT 2070 CMP #$7F ; DURING THE WAIT 2080 BEQ ABO0 2090 LDA 162 2100 CMP #60 2110 BCC W1 2120 DEX 2130 BMI W2 2140 BNE W0 2150 W2 RTS 2160 POINT .BYT 0 2170 COUNT .BYT 0 2180 PULSE .BYT 0 2190 AANSWER JSR OFFLINE ; ON-HOOK 2200 AN1 LDA 56577 ; CHECK FOR RING 2210 AND #8 ; DETECT 2220 BEQ AN2 ; WE HAVE R.D., (null) ON 2230 LDA 145 ; CHECK STOP KEY 2240 CMP #$7F 2250 BNE AN1 ; NONE, WAIT MORE 2260 AN0 JSR ONLINE ; OFF-HOOK 2270 CLC ; AND ABORT 2280 RTS 2290 AN2 LDA #0 ; SET UP FOR 30 SECOND 2300 STA 160 ; CARRIER DETECT WAIT 2310 STA 161 2320 STA 162 2330 JSR ONLINE ; OFF-HOOK 2340 AN3 LDA 145 ; CHECK STOP KEY 2350 CMP #$7F 2360 BEQ AN0 2370 LDA 56577 ; CHECK FOR DCD LINE 2380 AND #16 2390 BEQ AN4 ; (null)T CARRIER, SIGNAL 2400 LDA 160 2410 CMP #8 ; 30 SEC YET 2420 BCC AN3 ; NO, WAIT 2430 BCS AANSWER ; YES, RESET 2440 AN4 SEC ; SET CARRY FOR CARRIER 2450 RTS ; PRESENT, AND EXIT 2460 (null)OF LDA #0 ; PULSE ON-HOOK 2470 STA 56577 2480 RTS